package com.prd.dto;

import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.io.Serializable;
import java.util.Date;
import java.util.List;
import java.util.Objects;

/**
 * <p>
 * 客户-客人总表
 * </p>
 *
 * @author o1
 * @since 2023-11-27
 */
@Data
@AllArgsConstructor
@NoArgsConstructor
@ApiModel("客人CustomerGuestDTO")
public class CustomerGuestDTO implements Serializable {

    private static final long serialVersionUID = 1L;

    /**
     * 客人编号
     */
    @ApiModelProperty("客人编号")
    private String guestNo;

    /**
     * 从属客户编号
     */
    @ApiModelProperty("从属客户编号")
    private String customerNo;


    /**
     * 联系人/客人名称
     */
    @ApiModelProperty("联系人/客人名称")
    private String guestName;

    /**
     * 电话
     */
    @ApiModelProperty("电话")
    private String guestPhone;

    /**
     * 邮箱
     */
    @ApiModelProperty("邮箱")
    private String guestEmail;

    /**
     * wx
     */
    @ApiModelProperty("wx")
    private String guestWx;


    /**
     * 部门
     */
    @ApiModelProperty("部门")
    private String guestDepartment;

    /**
     * 职务
     */
    @ApiModelProperty("职务")
    private String guestJob;

    /**
     * 决策层级: 主决策人1，副决策人2，影响人3，其他4，不定义5
     */
    @ApiModelProperty("决策层级: 主决策人1，副决策人2，影响人3，其他4，不定义5")
    private Integer guestJobLevelId;

    /**
     * 客人类别: A类1，B类2，C类3 ...
     */
    @ApiModelProperty("客人类别: A类1，B类2，C类3 ...")
    private Integer guestLevel;

    /**
     * 客人效益
     */
    @ApiModelProperty("客人效益")
    private Integer guestBenefits;

    /**
     * 客人地址
     */
    @ApiModelProperty("客人地址")
    private String guestAddress;

    /**
     * 客户状态：洽谈中客户1，被候选客户2，合作中客户3，潜在客户4，准落户5
     */
    @ApiModelProperty("客户状态：洽谈中客户1，被候选客户2，合作中客户3，潜在客户4，准落户5")
    private Integer guestStatus;

    /**
     * 客人行业
     */
    @ApiModelProperty("客人行业")
    private String guestIndustry;

    /**
     * 创建时间
     */
    @ApiModelProperty("创建时间")
    private Date createTime;

    /**
     * 备注
     */
    @ApiModelProperty("备注")
    private String guestRemark;

    /**
     * 业务负责人id
     */
    @ApiModelProperty("业务负责人id")
    private String businessManagerId;

    /**
     * 业务部门
     */
    @ApiModelProperty("业务部门")
    private String businessDepartment;

    /**
     * 业务部门id
     */
    @ApiModelProperty("业务部门id")
    private String businessDepartmentId;

    /**
     * 业务负责人
     */
    @ApiModelProperty("业务负责人")
    private String businessManager;

    /**
     * 业务负责人电话
     */
    @ApiModelProperty("业务负责人电话")
    private String businessPhone;

    /**
     * 业务进度:已成交1， 未成交2，拜访2，跟进3，采访4
     */
    @ApiModelProperty("业务进度:已成交1， 未成交2，拜访2，跟进3，采访4")
    private int businessStatus;

    /**
     * 最后来往日期
     */
    @ApiModelProperty("最后来往日期")
    private Date lastBusinessDay;

    /**
     * 联系人列表
     */
//    @ApiModelProperty("联系人列表")
//    private List<CustomerGuestDTO> contactList;

    @ApiModelProperty("客户信息")
    private CustomerDTO customer;

    /**
     * 客户需求列表
     */
    @ApiModelProperty("客户需求列表")
    private List<CustomerRemarkDTO> guestRequireList;

    /**
     * 客户分析列表
     */
    @ApiModelProperty("客户分析列表")
    private List<CustomerRemarkDTO> guestAnalyzeList;

    /**
     * 客户备注列表
     */
    @ApiModelProperty("客户备注列表")
    private List<CustomerRemarkDTO> guestRemarkList;

    /**
     * 客户来源列表
     */
    @ApiModelProperty("客户来源列表")
    private List<CustomerContactDTO> guestSourceList;

    /**
     * 客户关系人列表
     */
    @ApiModelProperty("客户关系人列表")
    private List<CustomerContactDTO> guestRelevantList;

    /**
     * 来往沟通记录列表
     */
    @ApiModelProperty("来往沟通记录列表")
    private List<CustomerCommRecordDTO> guestCommRecordList;

    /**
     * 所属项目列表
     */
    @ApiModelProperty("所属项目列表")
    private List<CustomerProjectDTO> projectList;

    /**
     * 状态：正常0，公共资源库1，已销户2，已隐藏3
     */
    @ApiModelProperty("状态：正常0，公共资源库1，已销户2，已隐藏3")
    private Integer status;

    @ApiModelProperty("状态：正常0，公共资源库1，已销户2，已隐藏3")
    private CustomerGuestPersonalDetailDTO personalDetail;

    @ApiModelProperty("状态：正常0，公共资源库1，已销户2，已隐藏3")
    private CustomerGuestPotentialDetailDTO potentialDetail;

    @ApiModelProperty("状态：正常0，公共资源库1，已销户2，已隐藏3")
    private CustomerGuestFamilyDetailDTO familyDetail;

    /**
     * '是否为简易报备, 是1
     */
    @ApiModelProperty("是否为简易报备, 是1")
    private Integer isSimple;

    @Override
    public int hashCode() {
        return Objects.hashCode(guestName + guestPhone) & Integer.MAX_VALUE;
    }

}
